Computers / Programming / Language References / Assembly / Intel 80286

Overview

The Intel 286 is an evolution of the Intel 8086/8088. It adds some additional instructions as well as memory modes.

This page is about the 286 as it is the last of the 16-bit Intel processors but most of it should be applicable to earlier processors. I will note when things are only relevant to later processors.

CPU Registers

15
8
7
0
AX AH AL
DX DH DL
CD CD CL
BX BH BL
  BP
  SI
  DI
  SP
  CS
  DS
  SS
  ES
  F
  IP
  MSW

The 286 has 4 16-bit general purpose registers that can also be addressed as two 8-bit registers. These registers also have special uses within the instruction set. AX and DX are used for Multiply and Divide instructions along with I/O instructions, CX is used for counting loops, BX is used as a base register

There are also 11 other 16-bit special purpose registers. BP is another base register, SI and DI are index registers (source and destination respectively), SP is the stack pointer, CS, DS, SS and ES are segment selectors, F is the flags register, IP is the instruction pointer and MSW is the machine status word.

Memory Segmentation

The 286 uses memory segmentation to allow the usage of more than 64 KiB of memory. The four segment registers CS, DS, SS, and ES are the base segment addresses for the Code, Data, Stack and Extra segments respectively.